package com.operator.Activitys.adapter;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.RadioButton;

import com.operator.Activitys.R;
import com.operator.Activitys.adapter.base.BaseRecyclerViewAdapter;
import com.operator.Activitys.bean.Sale;
import com.zhy.autolayout.utils.AutoUtils;

import java.util.List;

/**
 * 项目名称：金泽云 手机app
 * 类描述：号卡销售
 * 创建人：张飞祥
 * 创建时间：2018/5/8 13:52
 * 修改人：张飞祥
 * 修改时间：2018/5/8 13:52
 * 修改备注：
 */
public abstract class SaleAdapter extends BaseRecyclerViewAdapter {

    //数据集合
    private List<Sale> mList;
    //上下文
    private Context mContext;
    //保存当前选中的position 重点！
    private int mSelectedPos =-1;

    //数据装填方法
    public SaleAdapter(Context mContext,List<Sale> mList) {
        super(mContext, mList);
        this.mList = mList;
        this.mContext = mContext;
    }

    @Override
    protected int getLayoutItemResId() {
        return R.layout.item_sale;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position, List payloads) {
        super.onBindViewHolder(holder, position, payloads);
        if (holder instanceof SaleViewHolder) {
            final SaleViewHolder viewHolder = (SaleViewHolder) holder;
            if(payloads.isEmpty()){
                /**
                 * payloads即有效负载，当首次加载或调用notifyDatasetChanged() ,
                 * notifyItemChange(int position)进行刷新时，payloads为empty 即空
                 */
                //将数据保存在itemView的Tag中，以便点击时进行获取
                viewHolder.itemView.setTag(position);
                //号卡销售 电话号码
                viewHolder.rbItemSale.setText(mList.get(position).getTelNum());
                //设置选中值
                viewHolder.rbItemSale.setChecked(mSelectedPos==position);

            }else{
                /**
                 *  当调用notifyItemChange(int position, Object payload)进行布局刷新时，payloads不会empty ，
                 *  所以真正的布局刷新应该在这里实现 重点！
                 */
                //设置选中值
                viewHolder.rbItemSale.setChecked(mSelectedPos==position);
            }

            viewHolder.rbItemSale.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //提供外部 给 点击的 position
                    setPhoneNumberPos(position);
                    //当前选中的position和上次选中不是同一个position 执行
                    if(mSelectedPos!=position){
                        viewHolder.rbItemSale.setChecked(true);
                        //判断是否有效 -1是初始值 即无效 第二个参数是Object 随便传个int 这里只是起个标志位
                        if(mSelectedPos!=-1){
                            notifyItemChanged(mSelectedPos,0);
                        }
                        mSelectedPos=position;
                    }
                }
            });

        }
    }


    /**
     * 卡号 单选事件
     */
    public abstract void setPhoneNumberPos(int position);


    @Override
    public RecyclerView.ViewHolder getViewHolder(View view) {
        return new SaleViewHolder(view);
    }

    /**
     * ViewHolder
     */
    public class SaleViewHolder extends RecyclerView.ViewHolder {

        //号卡销售 电话号码
        public RadioButton rbItemSale;

        public SaleViewHolder(View itemView) {
            super(itemView);
            /**
             * 初始化控件
             */
            //号卡销售 电话号码
            rbItemSale = (RadioButton) itemView.findViewById(R.id.rb_item_sale);
            //屏幕适配
            AutoUtils.autoSize(itemView);
        }
    }
}
